header
对不起,我是一个前端,一些同学说我是做前台的,对,我之前就是写页面的。之所以要再学Node,一方面是工作需要,有时(纯)后端不配合优化性能问题;另一方面是后端知识能够促进前端发展(大家说),当然页面重构技术除外。
最近又看了一遍《node深入浅出》,希望朴大能再写其他书籍,或者再版。Node的书籍主要包括 node基础知识、connect && middlewar、Express、线上部署等内容,《node实战》也是这个布局(layout)。说一些概念的时候,大家也能说一个大概,以下内容主要以demo为主。
请注意:以下内容包说,不包对
content
Simple server
Node 提供的相对底层的架构,可以轻松的实现一个server。如:
var http = require('http');
var server = http.createServer(function(req, res) {
var url = 'http://baidu.com';
var body = '点击<a href="' + url + '" target="_blank">百度</a>';
// https://baike.baidu.com/item/ContentType/1938445?fr=aladdin
res.setHeader('content-type', 'text/html;charset=utf-8');
// http://nodejs.cn/api/buffer.html#buffer_class_method_buffer_bytelength_string_encoding
res.setHeader('content-length', Buffer.byteLength(body, 'utf-8'));
res.end(body);
})
// nodemon to watch
server.listen(3000);
content-type 指定返回内容类型,content-length 指定返回字节长度,能够提供传输效率。大家也可以将text/html
改成text/plain
,也可以将 Buffer.byteLength(body, 'utf-8')
改成 body.length
看下效果,想想为什么不对,书中都有讲。
Connect
它引入中间件概念,并封装了一些常用的中间件,方便大家能够更方便搭建服务。
var http = require('http');
var connect = require('connect'),
morgan = require('morgan');
var app = connect();
// logger
app.use(morgan(':method :url :status :res[content-length] - :response-time ms'));
// respond to all requests
app.use(function(req, res){
res.end('Hello from Connect!\n');
});
//create node.js http server and listen on port
http.createServer(app).listen(3000);
morgan 用来记录日志,代码看起来非常清爽。
Express
var express = require('express');
var app = express(),
user = express();
user.get('/show/:id', function(req, res) {
res.end('get user detail');
})
user.get('/list', function(req, res) {
res.end('get user list');
})
app.use('/user', user);
app.listen(3000);
及
var express = require('express');
var app = express(),
user = express();
user.get('/user', function(req, res) {
res.end('user page');
})
// 这里直接写路由应该不常见
app.get('/home', function(req, res) {
res.end('home page');
})
app.use(user);
app.listen(3000);
footer
以上内容介绍了如何建立server 和 使用中间件来开发功能。 下一章待续....
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。